home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 27
/
CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso
/
CUCD
/
Programming
/
Mesa
/
src-glut
/
glutstuff.h
< prev
next >
Wrap
C/C++ Source or Header
|
1998-08-02
|
4KB
|
168 lines
/*
* Amiga GLUT graphics library toolkit
* Version: 1.1
* Copyright (C) 1998 Jarno van der Linden
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* glutstuff.h
*
* Version 1.0 27 Jun 1998
* by Jarno van der Linden
* jarno@kcbbs.gen.nz
*
* Version 1.1 02 Aug 1998
* by Jarno van der Linden
* jarno@kcbbs.gen.nz
*
* - Quantizer plugin support added
*
*/
#include <exec/types.h>
#include "gl/glut.h"
#include "gl/amigamesartl.h"
#define WIN_WIDTH(win) ((win)->Width - (win)->BorderLeft - (win)->BorderRight)
#define WIN_HEIGHT(win) ((win)->Height - (win)->BorderTop - (win)->BorderBottom)
struct GlutMenuEntry
{
struct GlutMenuEntry *next, *prev;
char *name;
int value;
BOOL issubmenu;
struct GlutMenu *menu;
};
struct GlutMenu
{
int menuid;
struct GlutMenu *next, *prev;
void (*menufunc)(int value);
struct GlutMenuEntry *entries;
int numentries;
BOOL needupdate;
};
struct GlutWindow
{
struct Window *window;
int winid;
struct GlutWindow *next, *prev;
AmigaMesaRTLContext context;
APTR vi;
struct Menu *menu;
struct GlutMenu *leftmenu, *middlemenu, *rightmenu;
UWORD qualifiers;
int mousex, mousey;
int winx, winy; /* Shape that we want */
int winwidth, winheight;
int wincurx, wincury; /* Shape that we believe it to currently be */
int wincurwidth, wincurheight;
void (*displayfunc)(void);
void (*keyboardfunc)(unsigned char key,int x, int y);
void (*reshapefunc)(int width, int height);
void (*visibilityfunc)(int state);
void (*specialfunc)(int key, int x, int y);
void (*mousefunc)(int button, int state, int x, int y);
void (*motionfunc)(int x, int y);
void (*passivemotionfunc)(int x, int y);
BOOL needredisplay;
BOOL needreshape, needreshapegui;
BOOL needposition, needpositiongui;
BOOL needvisibility, visible;
BOOL needleftmenu, needmiddlemenu, needrightmenu;
};
struct GlutStuff
{
struct MsgPort *msgport;
struct GlutWindow *curwin;
struct GlutWindow *wins;
int nextwinid;
struct GlutMenu *curmenu;
struct GlutMenu *menus;
int nextmenuid;
int initposx, initposy;
int initwidth, initheight;
int numcolours;
int colourbase;
char *pubscreenname;
char *quantizer;
ULONG quantizerversion;
GLboolean rgba;
GLboolean alpha;
GLboolean db;
GLboolean accum;
GLboolean depth;
GLboolean stencil;
GLboolean multisample;
GLboolean stereo;
GLboolean luminance;
void (*idlefunc)(void);
void (*menustatusfunc)(int status, int x, int y);
ULONG basetime_secs, basetime_micros;
BOOL havebasetime;
};
extern struct GlutStuff glutstuff;
int stuffGetNewWinID(void);
struct GlutWindow *stuffGetWin(int winid);
void stuffLinkInWin(struct GlutWindow *gw);
void stuffLinkOutWin(struct GlutWindow *gw);
void stuffMakeCurrent(struct GlutWindow *gw);
int stuffGetNewMenuID(void);
struct GlutMenu *stuffGetMenu(int menuid);
void stuffLinkInMenu(struct GlutMenu *gm);
void stuffLinkOutMenu(struct GlutMenu *gm);
void stuffMakeCurrentMenu(struct GlutMenu *gm);
struct GlutMenuEntry *stuffGetMenuEntry(int entry,struct GlutMenu *gm);
void stuffLinkInMenuEntry(struct GlutMenuEntry *gme,struct GlutMenu *gm);
void stuffLinkOutMenuEntry(struct GlutMenuEntry *gme,struct GlutMenu *gm);